package com.leetcode.hash;

import java.util.HashMap;

//两数之和
public class lc_1 {
    public static void main(String[] args) {
        int[] nums = {2, 7, 11, 15};
        int target = 9;
        int[] res = twoSum(nums, target);
        for (int result : res) {
            System.out.println(result);
        }
    }

    public static int[] twoSum(int[] nums, int target) {
        //思路: 遍历数组,对于每一个数字寻找hash表中是否存在对应的另一个数字和为target,
        //没有的话就直接放入哈希表

        //1.创建一个哈希表,key = 值  value = 数组下表
        HashMap<Integer, Integer> hashMap = new HashMap<>();
        int[] result = new int[2];
        for (int i = 0; i < nums.length; i++) {
            int temp = target - nums[i];
            //2.寻找哈希表中是否存在temp,如果存在返回当前的i和key
            if (hashMap.containsKey(temp)) {
                result[1] = i;
                result[0] = hashMap.get(temp);
                return result;
            }
            //3.如果不存在,将这个元素加入哈希表中
            hashMap.put(nums[i], i);
        }
        return result;
    }
}
